package com.alibaba.citrus.ots.sales.plan.api.setting;

import com.alibaba.citrus.ots.sales.plan.dto.api.request.BatchEditCostInsuranceFreightRequest;
import com.alibaba.citrus.ots.sales.plan.dto.api.request.BatchUpdateScItemStatusRequest;
import com.alibaba.citrus.ots.sales.plan.sdo.SalesPlanScItemSDO;
import com.alibaba.lattice2.epoch.meshflow.model.annotation.MeshFlowService;
import com.alibaba.lattice2.epoch.sdk.model.Result;

import java.util.List;

/**
 * @author wangyibing
 */
@MeshFlowService(apps = {"bc_ots"}, name = "salesPlanScItemWriteService")
public interface SalesPlanScItemWriteService {
    /**
     * 批量新增计划货品
     *
     * @param productPlanCreateRequest
     * @return
     */
    Result<List<String>> batchCreateSalesPlanScItem(List<SalesPlanScItemSDO> productPlanCreateRequest);

    /**
     * 新增计划货品
     *
     * @param salesPlanScItemSDO
     * @return
     */
    Result<String> createSalesPlanScItem(SalesPlanScItemSDO salesPlanScItemSDO);

    /**
     * 编辑计划货品
     *
     * @param productPlanEditRequest
     * @return
     */
    Result<Integer> editSalesPlanScItem(SalesPlanScItemSDO productPlanEditRequest);

    /**
     * 变更计划货品状态
     *
     * @param planStateRequest
     * @return
     */
    Result<Integer> editSalesPlanScItemState(SalesPlanScItemSDO planStateRequest);

    /**
     * 变更计划货品标记
     *
     * @param productPlanMarkRequest
     * @return
     */
    Result<Integer> editSalesPlanScItemMark(SalesPlanScItemSDO productPlanMarkRequest);

    /**
     * 更新价格 （发送消息）
     *
     * @param batchEditCostInsuranceFreightRequest
     * @return
     */
    Result<Boolean> batchEditCostInsuranceFreight(BatchEditCostInsuranceFreightRequest batchEditCostInsuranceFreightRequest);

    /**
     * 更新价格消费
     *
     * @param message
     * @return
     */
    Result<Boolean> consumePriceChange(String message);


    /**
     * 批量更新计划货品范围的状态
     * @param batchUpdateScItem
     * @return
     */
    Result<Boolean> batchUpdateStatus(BatchUpdateScItemStatusRequest batchUpdateScItem);


}
